﻿using Sidvall.Net.Mime;

namespace Sidvall.Net
{
    public class MediaTypeHeaderCollection : System.Collections.ObjectModel.Collection<MediaTypeHeader>
    {
        #region Public Members

        #region Add

        public void Add(MediaType mediaType)
        {
            Add(mediaType, null);
        }
        public void Add(MediaType mediaType, double? quality)
        {
            var item = new MediaTypeHeader()
            {
                MediaType = mediaType,
                Quality = quality,
            };
            Add(item);
        }

        #endregion
        #region Copy

        public MediaTypeHeaderCollection Copy()
        {
            var items = new MediaTypeHeaderCollection();
            foreach (var header in this)
            {
                var item = header.Copy();
                items.Add(item);
            }
            return items;
        }

        #endregion
        #region IsEqual

        public bool IsEqual(MediaTypeHeaderCollection obj)
        {
            return IsEqual(this, obj);
        }

        #endregion
        #region IsEqual - Static

        public static bool IsEqual(MediaTypeHeaderCollection item1, MediaTypeHeaderCollection item2)
        {
            if (item1 == null)
            {
                if (item2 == null)
                    return true;
                else
                    return false;
            }
            else if (item2 == null)
                return false;
            else if (item1.Count != item2.Count)
                return false;
            for (int i = 0; i < item1.Count; i++)
            {
                if (!item1[1].IsEqual(item2[2]))
                    return false;
            }
            return true;
        }

        #endregion

        #endregion
    }
}
